2022/01/[路飞][LeetCode]230_二叉搜索树中第K小的元素/index

看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~

谁能九层台,不用累土起!

题目地址

题目

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

示例 1:

image.png

1
2
输入: root = [3,1,4,null,2], k = 1
输出: 1

示例 2:

image.png

1
2
输入: root = [5,3,6,2,4,null,null,1], k = 3
输出: 3

提示:

  • 树中的节点数为 n
  • 1 <= k <= n <= 104
  • 0 <= Node.val <= 104

解题思路

  • 我们使用中序遍历
  • 因为搜索树的特性,我们可以获得一个升序数组
  • k小就是数组的第k-1

解题代码

1
2
3
4
5
6
7
8
9
10
11
var kthSmallest = function(root, k) {
let arr = []
const mmap = (node)=>{
if(!node) return
mmap(node.left)
arr.push(node.val)
mmap(node.right)
}
mmap(root)
return arr[k-1]
};

如有任何问题或建议,欢迎留言讨论!

文章作者: Joker
文章链接: https://qytayh.github.io/2022/01/[%E8%B7%AF%E9%A3%9E][LeetCode]230_%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%AC%ACK%E5%B0%8F%E7%9A%84%E5%85%83%E7%B4%A0/index/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker's Blog